home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Diamond Collection
/
The Diamond Collection (Software Vault)(Digital Impact).ISO
/
cdr37
/
ciacht58.zip
/
CIA-CHAT.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1995-01-25
|
11KB
|
612 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 3.O1 (Encryption type I) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN001
Boolean BOOLEAN002
Integer INTEGER001
Integer INTEGER002
Integer INTEGER003
Integer INTEGER004
Integer INTEGER005
Integer INTEGER006
Integer INTEGER007
Integer INTEGER008
Integer INTEGER009
Integer INTEGER010
Integer INTEGER011
Integer INTEGER012
Integer INTEGER013
Integer INTEGER014
Integer INTEGER015
Integer INTEGER016
Integer INTEGER017
Integer INTEGER018
Integer INTEGER019
Integer INTEGER020
Integer INTEGER021
Integer INTEGER022
Integer TINTEGER023(40)
Integer INTEGER024
Integer INTEGER025
Integer TINTEGER026(40)
Integer INTEGER027
Integer INTEGER028
Integer INTEGER029
Integer INTEGER030
String STRING001
String STRING002
String TSTRING003(10)
String STRING004
String STRING005
String STRING006
String STRING007
String STRING008
String STRING009
String STRING010
String TSTRING011(40)
String TSTRING012(40)
String STRING013
String STRING014
String STRING015
String STRING016
String STRING017
;------------------------------------------------------------------------------
For INTEGER004 = 1 To 40
TSTRING011(INTEGER004) = ""
TSTRING012(INTEGER004) = ""
TINTEGER023(INTEGER004) = 0
TINTEGER026(INTEGER004) = 0
Next
STRING008 = TokenStr()
Tokenize STRING008
GetToken STRING009
If (STRING009 == "/C") Goto LABEL004
STRING007 = Chr(13)
STRING010 = Chr(8)
STRING006 = Chr(27)
FOpen 1, PPEPath() + "PAGE.CNF", 0, 0
FGet 1, INTEGER001
FGet 1, INTEGER002
FGet 1, STRING002
FGet 1, INTEGER003
FGet 1, INTEGER005
FClose 1
DispFile PPEPath() + "WHY.ANS", 0
AnsiPos INTEGER001, INTEGER002
InputStr "_", STRING001, STRING002, INTEGER003, " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`1234567890-=\~!@#$%^&*()_+|[]{};':,./<>?", 0
If (STRING001 == "") Then
Cls
Print "@X07Sysop Page Aborted!"
End
Endif
Gosub LABEL014
STRING004 = ""
STRING005 = ""
INTEGER004 = 1
INTEGER006 = 150
INTEGER007 = 15
INTEGER005 = INTEGER005 * 155.7
INTEGER008 = 0
If (Exist(PPEPath() + "QUIET.DAT")) Then
BOOLEAN001 = 1
Else
BOOLEAN001 = 0
Endif
AnsiPos 1, 23
ClrEol
AnsiPos 33, 23
TSTRING003(1) = "@X08.PAGING SYSOP."
TSTRING003(2) = "@X07.@X08PAGING SYSOP@X07."
TSTRING003(3) = "@X0F.@X07P@X08AGING SYSO@X07P@X0F."
TSTRING003(4) = "@X07.@X0FP@X07A@X08GING SYS@X07O@X0FP@X07."
TSTRING003(5) = "@X08.@X07P@X0FA@X07G@X08ING SY@X07S@X0FO@X07P@X08."
TSTRING003(6) = "@X08.P@X07A@X0FG@X07I@X08NG S@X07Y@X0FS@X07O@X08P."
TSTRING003(7) = "@X08.PA@X07G@X0FI@X07N@X08G @X07S@X0FY@X07S@X08OP."
TSTRING003(8) = "@X08.PAG@X07I@X0FN@X07G @X0FS@X07Y@X08SOP."
TSTRING003(9) = "@X08.PAGI@X07N@X0FG @X07S@X08YSOP."
TSTRING003(10) = "@X08.PAGIN@X07G @X08SYSOP."
Print TSTRING003(INTEGER004)
BOOLEAN002 = 1
While (BOOLEAN002 && (INTEGER005 > 0)) Do
If (Upper(STRING005) == "Q") Then
If (BOOLEAN001) Goto LABEL001
Sound 0
BOOLEAN001 = 1
FOpen 1, PPEPath() + "QUIET.DAT", 1, 3
FPut 1, "THIS FILE IS USED BY CIA-CHAT AS A QUIET FLAG! DON'T DELETE IT!"
FClose 1
Goto LABEL002
:LABEL001
BOOLEAN001 = 0
Delete PPEPath() + "QUIET.DAT"
:LABEL002
Else
Select Case (STRING005)
Case STRING007, " "
BOOLEAN002 = 0
Newline
Goto LABEL004
Case STRING006
BOOLEAN002 = 0
Newline
Print "@X07Sorry @X0F@USER@@X07, the Sysop is not available to chat!"
Goto LABEL003
Endif
End Select
If (STRING004 == STRING006) Then
BOOLEAN002 = 0
Newline
Print "@X07Page aborted by User!"
Goto LABEL003
Endif
Inc INTEGER008
If (INTEGER008 == 7) Then
INTEGER008 = 0
Inc INTEGER004
AnsiPos 33, 23
Print TSTRING003(INTEGER004)
Endif
If (INTEGER004 == 11) INTEGER004 = 1
If (!BOOLEAN001) Sound INTEGER006
INTEGER006 = INTEGER006 + INTEGER007
If (INTEGER006 > 1800) INTEGER007 = -15
If (INTEGER006 < 150) INTEGER007 = 15
STRING004 = MInkey()
STRING005 = KInkey()
Dec INTEGER005
EndWhile
Newline
PrintLn "@X07Sorry @X0F@USER@@X07, the Sysop is not available to chat!"
:LABEL003
Sound 0
End
:LABEL004
FOpen 1, PPEPath() + "CHAT.CNF", 0, 0
FGet 1, STRING014
FGet 1, STRING013
FGet 1, INTEGER011
FGet 1, INTEGER013
FGet 1, INTEGER012
FGet 1, INTEGER014
FGet 1, INTEGER015
FGet 1, INTEGER017
FGet 1, INTEGER016
FGet 1, INTEGER018
FGet 1, INTEGER019
FGet 1, INTEGER020
FGet 1, STRING016
FGet 1, STRING017
FClose 1
RdUNet PcbNode()
WrUNet PcbNode(), "C", UN_Name(), UN_City(), "", ""
DispFile PPEPath() + "CHAT.ANS", 0
INTEGER024 = INTEGER015
INTEGER025 = INTEGER017
INTEGER027 = INTEGER016 - INTEGER015
INTEGER028 = INTEGER018 - INTEGER017
INTEGER021 = INTEGER011
INTEGER022 = INTEGER013
INTEGER029 = INTEGER012 - INTEGER011
INTEGER030 = INTEGER014 - INTEGER013
INTEGER010 = 1
INTEGER009 = 1
TINTEGER026(INTEGER010) = 0
TINTEGER023(INTEGER009) = 0
INTEGER008 = Len(StripAtx(STRING016)) + Len(U_Name()) + Len(StripAtx(STRING017))
INTEGER008 = INTEGER008 / 2
INTEGER019 = INTEGER019 - INTEGER008
AnsiPos INTEGER019, INTEGER020
Print STRING016 + "@USER@" + STRING017
:LABEL005
STRING004 = MInkey()
STRING005 = KInkey()
If (STRING004 == "") Then
Goto LABEL006
Endif
Select Case (STRING004)
Case STRING006
Goto LABEL008
Case STRING010
If (INTEGER024 > INTEGER015) Then
TSTRING011(INTEGER010) = Left(TSTRING011(INTEGER010), Len(TSTRING011(INTEGER010)) - 1)
Dec TINTEGER026(INTEGER010)
AnsiPos INTEGER024, INTEGER025
Print STRING004 + " " + STRING004
Dec INTEGER024
ElseIf (INTEGER010 > 1) Then
Dec INTEGER010
Dec INTEGER025
INTEGER024 = INTEGER015 + Len(TSTRING011(INTEGER010))
AnsiPos INTEGER024, INTEGER025
Endif
Case Chr(18)
Cls
DispFile PPEPath() + "CHAT.ANS", 0
For INTEGER004 = 1 To 40
TSTRING011(INTEGER004) = ""
TSTRING012(INTEGER004) = ""
TINTEGER026(INTEGER004) = 0
TINTEGER023(INTEGER004) = 0
INTEGER010 = 1
INTEGER009 = 1
INTEGER024 = INTEGER015
INTEGER025 = INTEGER017
INTEGER021 = INTEGER011
INTEGER022 = INTEGER013
Next
Case STRING007
If (INTEGER025 == INTEGER018) Then
TSTRING011(INTEGER010) = ""
Gosub LABEL012
Else
Inc INTEGER025
Inc INTEGER010
TSTRING011(INTEGER010) = ""
INTEGER024 = INTEGER015
AnsiPos INTEGER024, INTEGER025
Endif
If (((((((((STRING004 == "LEFT") || (STRING004 == "RIGHT")) || (STRING004 == "UP")) || (STRING004 == "DOWN")) || (STRING004 == "DEL")) || (STRING004 == "HOME")) || (STRING004 == "PGUP")) || (STRING004 == "END")) || (STRING004 == "PGDN")) Goto LABEL006
Case INTEGER016
TSTRING011(INTEGER010) = TSTRING011(INTEGER010) + STRING004
Gosub LABEL010
Case Else
TSTRING011(INTEGER010) = TSTRING011(INTEGER010) + STRING004
Inc TINTEGER026(INTEGER010)
AnsiPos INTEGER024, INTEGER025
Print STRING013
Print STRING004
Inc INTEGER024
End Select
:LABEL006
If (STRING005 == "") Then
Goto LABEL007
Endif
Select Case (STRING005)
Case STRING006
Goto LABEL008
Case STRING010
If (INTEGER021 > INTEGER011) Then
TSTRING012(INTEGER009) = Left(TSTRING012(INTEGER009), Len(TSTRING012(INTEGER009)) - 1)
Dec TINTEGER023(INTEGER009)
AnsiPos INTEGER021, INTEGER022
Print STRING005 + " " + STRING005
Dec INTEGER021
Else
Dec INTEGER009
Dec INTEGER022
INTEGER021 = INTEGER011 + Len(TSTRING012(INTEGER009))
AnsiPos INTEGER021, INTEGER022
Endif
Case STRING007
If (INTEGER022 == INTEGER014) Then
TSTRING012(INTEGER009 + 1) = ""
Gosub LABEL013
Else
Inc INTEGER022
Inc INTEGER009
INTEGER021 = INTEGER011
TSTRING012(INTEGER009) = ""
AnsiPos INTEGER021, INTEGER022
Endif
Case Chr(9)
AnsiPos 15, 6
Print "@X01┌─────────────────────────────────────────────┐"
AnsiPos 15, 7
Print "│ [@X0FESC@X01] @X09E@X01XiT @X09C@X01iA @X09S@X01plit @X09S@X01creen @X09C@X01hat │"
AnsiPos 15, 8
Print "│ [@X0FCTRL-V@X01] @X09V@X01iEW @X09A T@X01ext @X09F@X01ile │"
AnsiPos 15, 9
Print "│ [@X0FCTRL-R@X01] @X09R@X01efresh @X09S@X01creen │"
AnsiPos 15, 10
Print "│ [@X0FTAB@X01] @X09T@X01his @X09H@X01elp @X09W@X01indow │"
AnsiPos 15, 11
Print "└─────────────────────────────────────────────┘@X07"
STRING015 = KInkey()
While (STRING015 == "") Do
STRING015 = KInkey()
EndWhile
Gosub LABEL009
Case Chr(18)
Cls
DispFile PPEPath() + "CHAT.ANS", 0
For INTEGER004 = 1 To 40
TSTRING011(INTEGER004) = ""
TSTRING012(INTEGER004) = ""
TINTEGER026(INTEGER004) = 0
TINTEGER023(INTEGER004) = 0
INTEGER010 = 1
INTEGER009 = 1
INTEGER024 = INTEGER015
INTEGER025 = INTEGER017
INTEGER021 = INTEGER011
INTEGER022 = INTEGER013
Next
Case Chr(22)
STRING015 = ""
AnsiPos 10, 8
Print "@X01┌───────────────────────────────────────────────────────────┐@X07"
AnsiPos 10, 9
Print "@X01│ @X08φ @X0FF@X09i@X01le@X0FN@X09a@X01me to @X0FV@X09i@X01ew@X08: @X07····································· @X01│@X08 "
AnsiPos 10, 10
Print "@X01└───────────────────────────────────────────────────────────┘@X08 "
AnsiPos 32, 9
InputStr "_", STRING015, "@X0F", 37, " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`1234567890~!@#$%^&()_+|-=\[]';,./{}:<>?", 0
If (STRING015 <> "") Then
Cls
DispFile STRING015, 0
More
Cls
Endif
Gosub LABEL009
If (((((((((STRING005 == "LEFT") || (STRING005 == "RIGHT")) || (STRING005 == "UP")) || (STRING005 == "DOWN")) || (STRING005 == "DEL")) || (STRING005 == "HOME")) || (STRING005 == "PGUP")) || (STRING005 == "END")) || (STRING005 == "PGDN")) Goto LABEL007
Case INTEGER012
TSTRING012(INTEGER009) = TSTRING012(INTEGER009) + STRING005
Gosub LABEL011
Case Else
TSTRING012(INTEGER009) = TSTRING012(INTEGER009) + STRING005
Inc TINTEGER023(INTEGER009)
AnsiPos INTEGER021, INTEGER022
Print STRING014
Print STRING005
Inc INTEGER021
End Select
:LABEL007
Goto LABEL005
:LABEL008
Cls
PrintLn "@X08 [@X07C@X0Fi@X07A @X0FS@X07plit @X0FS@X07creen @X0FC@X07hat @X08v@X07O@X08.@X0758 @X08by @X0FD@X07ark @X0FJ@X07ester@X08]@X07"
End
:LABEL009
DispFile PPEPath() + "CHAT.ANS", 0
Print STRING013
For INTEGER004 = 1 To INTEGER028 + 1
AnsiPos INTEGER015, INTEGER017 + INTEGER004 - 1
Print TSTRING011(INTEGER004) + Space(INTEGER027 - Len(TSTRING011(INTEGER004)))
Next
Print STRING014
For INTEGER004 = 1 To INTEGER030 + 1
AnsiPos INTEGER011, INTEGER013 + INTEGER004 - 1
Print TSTRING012(INTEGER004) + Space(INTEGER029 - Len(TSTRING012(INTEGER004)))
Next
Return
:LABEL010
TSTRING011(INTEGER010 + 1) = ""
STRING009 = Right(TSTRING011(INTEGER010), 1)
While (STRING009 <> " ") Do
TSTRING011(INTEGER010 + 1) = STRING009 + TSTRING011(INTEGER010 + 1)
TSTRING011(INTEGER010) = Left(TSTRING011(INTEGER010), Len(TSTRING011(INTEGER010)) - 1)
STRING009 = Right(TSTRING011(INTEGER010), 1)
EndWhile
TINTEGER026(INTEGER010 + 1) = Len(TSTRING011(INTEGER010 + 1))
If (INTEGER025 == INTEGER018) Then
Gosub LABEL012
Print STRING013
Else
AnsiPos INTEGER015 + Len(TSTRING011(INTEGER010)), INTEGER025
Print Space(INTEGER027 - Len(TSTRING011(INTEGER010)))
Inc INTEGER010
Inc INTEGER025
INTEGER024 = INTEGER015 + Len(TSTRING011(INTEGER010))
AnsiPos INTEGER015, INTEGER025
Print TSTRING011(INTEGER010)
Endif
Return
:LABEL011
TSTRING012(INTEGER009 + 1) = ""
STRING009 = Right(TSTRING012(INTEGER009), 1)
While (STRING009 <> " ") Do
TSTRING012(INTEGER009 + 1) = STRING009 + TSTRING012(INTEGER009 + 1)
TSTRING012(INTEGER009) = Left(TSTRING012(INTEGER009), Len(TSTRING012(INTEGER009)) - 1)
STRING009 = Right(TSTRING012(INTEGER009), 1)
EndWhile
TINTEGER023(INTEGER009 + 1) = Len(TSTRING012(INTEGER009 + 1))
If (INTEGER022 == INTEGER014) Then
Gosub LABEL013
Print STRING014
Else
AnsiPos INTEGER011 + Len(TSTRING012(INTEGER009)), INTEGER022
Print Space(INTEGER029 - Len(TSTRING012(INTEGER009)))
Inc INTEGER009
Inc INTEGER022
INTEGER021 = INTEGER011 + Len(TSTRING012(INTEGER009))
AnsiPos INTEGER011, INTEGER022
Print TSTRING012(INTEGER009)
Endif
Return
:LABEL012
Print STRING013
For INTEGER004 = 1 To INTEGER028 + 1
TSTRING011(INTEGER004) = TSTRING011(INTEGER004 + 5)
TINTEGER026(INTEGER004) = TINTEGER026(INTEGER004 + 5)
AnsiPos INTEGER015, INTEGER017 + INTEGER004 - 1
Print TSTRING011(INTEGER004) + Space(INTEGER027 - Len(TSTRING011(INTEGER004)))
Next
INTEGER010 = INTEGER010 - 4
INTEGER025 = INTEGER025 - 4
INTEGER024 = INTEGER015 + Len(TSTRING011(INTEGER010))
TINTEGER026(INTEGER010) = Len(TSTRING011(INTEGER010))
AnsiPos INTEGER024, INTEGER025
Return
:LABEL013
Print STRING014
For INTEGER004 = 1 To INTEGER030 + 1
TSTRING012(INTEGER004) = TSTRING012(INTEGER004 + 5)
TINTEGER023(INTEGER004) = TINTEGER023(INTEGER004 + 5)
AnsiPos INTEGER011, INTEGER013 + INTEGER004 - 1
Print TSTRING012(INTEGER004) + Space(INTEGER029 - Len(TSTRING012(INTEGER004)))
Next
INTEGER009 = INTEGER009 - 4
INTEGER022 = INTEGER022 - 4
INTEGER021 = INTEGER011 + Len(TSTRING012(INTEGER009))
TINTEGER023(INTEGER009) = Len(TSTRING012(INTEGER009))
AnsiPos INTEGER021, INTEGER022
Return
:LABEL014
AnsiPos 1, 1
Color 1
SPrintLn "┌─────────────────────────────────────────────────────────────────────────────┐"
SPrint "│"
Color 9
SPrint " SYSOP! SYSOP! YOU ARE BEING PAGED! REASON: "
Color 1
SPrintLn "│"
Color 1
SPrint "│"
Color 15
INTEGER004 = (78 - Len(STRING001)) / 2
STRING001 = Space(INTEGER004) + STRING001
SPrint STRING001
SPrint Space(78 - Len(STRING001))
AnsiPos 79, 3
Color 1
SPrintLn "│"
Color 1
SPrint "│ ["
Color 15
SPrint "SPACE"
Color 1
SPrint "]="
Color 9
SPrint "C"
Color 1
SPrint "HAT "
Color 9
SPrint "W"
Color 1
SPrint "ITH "
Color 9
SPrint "U"
Color 1
SPrint "SER ["
Color 15
SPrint "Q"
Color 1
SPrint "]="
Color 9
SPrint "Q"
Color 1
SPrint "UIET "
Color 9
SPrint "T"
Color 1
SPrint "OGGLE ["
Color 15
SPrint "ESC"
Color 1
SPrint "]="
Color 9
SPrint "A"
Color 1
SPrint "BORT "
Color 9
SPrint "P"
Color 1
SPrintLn "AGE │"
SPrintLn "└─────────────────────────────────────────────────────────────────────────────┘"
Return
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 3 End
; 6 Cls
; 1 ClrEol
; 1 More
; 27 Color
; 85 Goto
; 136 Let
; 35 Print
; 2 PrintLn
; 48 If
; 6 DispFile
; 3 FOpen
; 3 FClose
; 19 FGet
; 1 FPut
; 1 Delete
; 2 InputStr
; 9 Gosub
; 6 Return
; 14 Inc
; 9 Dec
; 4 Newline
; 1 Tokenize
; 1 GetToken
; 1 RdUNet
; 1 WrUNet
; 35 AnsiPos
; 3 Sound
; 25 SPrint
; 5 SPrintLn
;
;
; ■ Functions used :
;
; 1 -
; 1 *
; 2 /
; 72 +
; 25 -
; 46 ==
; 3 <>
; 8 <
; 7 <=
; 5 >
; 14 >=
; 44 !
; 15 &&
; 24 ||
; 27 Len(
; 1 Upper()
; 4 Left()
; 4 Right()
; 8 Space()
; 7 Chr()
; 1 U_Name()
; 2 StripAtx()
; 10 PPEPath()
; 2 PcbNode()
; 1 UN_Name()
; 1 UN_City()
; 1 Exist()
; 1 TokenStr()
; 4 KInkey()
; 2 MInkey()
;
;------------------------------------------------------------------------------
;
; Analysis flags : No flag
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 7 For/Next
; 4 While/EndWhile
; 15 If/Then or If/Then/Else
; 3 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------